//A水料价表格初始化
var costReportA=$("#cost_report_a").edatagrid({
    //A水料价事件触发
    onBeforeSave: function (index) {   //保存前的时候触发
        if ($("#costReportId").val() != '') {
            return true;
        } else {
            layer.msg("请先输入版本!");
            return false
        }
    },
    onDestroy: function () {            //销毁的时候触发
        cost_report_a_reloadFooter();   //调用计算总价格方法 重新计算总价格
        final_result();                 //计算总成本 方法
    },
    onSave: function () {
        cost_report_a_reloadFooter();   //A水料统计方法
        final_result();                 //总成本统计方法
    }
})

//B人工--初始化-事件
var costReportB =$('#cost_report_b').edatagrid({
    //B 合计
    onAfterEdit: function () {  //完成编辑的时候触发
        cost_report_b_count(); //统计B的方法
        final_result();         //统计总成本的方法
    },
    onBeforeSave: function (index) {
        if ($("#costReportId").val() != '') {
            return true;
        } else {
            topCommonMessage("请先输入版本!");
            return false
        }
    },
    onDestroy: function (index,row) {

        //由于循环删除多个会造成原数组的变化：使用从最后的数组元素开始遍历，就不会造成影响
        var len=costReportBSinglehoursItem.length-1;
        //销毁的时候触发
        if (row.workerType==3){ //此类型的在b人工表中是有多个的，只能比较subId
            for (var i=len;i>=0;i--){
                if (row.subId==costReportBSinglehoursItem[i].subId){// 主键id一致，进行删除
                    costReportBSinglehoursItem.splice(i,1)//javaScript删除数字方法只有这个方法
                    break
                }
            }
        }else {
            for(var i=len;i>=0;i--){
                if(row.workerType==costReportBSinglehoursItem[i].workerType){
                    costReportBSinglehoursItem.splice(i,1)//javaScript删除数字方法只有这个方法
                }
            }

        }
        //以下方法是：重新计算b人工等的总和
        cost_report_b_count();
        final_result();
    },
});

//初始化 c 配件
var costReportC=$('#cost_report_c').edatagrid({
    fitColumns: true,
    onBeforeSave: function (index) {
        if ($("#costReportId").val() != '') {
            return true;
        } else {
            topCommonMessage("请先输入版本!");
            return false
        }
    },
    onDestroy: function (index,row) {
        //根据成员变量的randomNum删除全局变量中的数据
        cartonTableData.forEach(function (value,i) {
            if (value.randomNum==row.randomNum){
                cartonTableData.splice(i,1);//删除操作
            }
        })
        cartonTableDataK.forEach(function (value,i) {
            if (value.randomNum==row.randomNum){
                cartonTableDataK.splice(i,1);
            }
        })
        cost_report_c_count();
        final_result();
    },
    onAfterEdit: function () {
        cost_report_c_count();
        final_result();
    }
});

//初始化b人工-添加窗口
var initialInfoDlg={
    id:$('#InitialInfo_dlg'),
    init:function(){
       return $('#InitialInfo_dlg').dialog({
            title: '人工类型工时',
            width: costsystemFblW,
            height: costsystemFblH,
            cache: false,
            modal: true,
           closed: false,
           onClose:function(){
               costReportB.edatagrid('saveRow');
               $('#InitialInfo_table').datagrid("loadData", {total: 0, rows: []});             //清空datagrid
               $('#InitialInfo_table2').datagrid("loadData", {total: 0, rows: []});             //清空datagrid
               $("#InitialInfo_crii").textbox("setValue", "");                                  //清空模糊查询
           },
           buttons: [{
               iconCls:'icon-remove',
               text:'清空',
               handler:function(){InitialInfoTableEmpty()}
           },{
               iconCls:'icon-remove',
               text:'删除',
               handler:function(){InitialInfo_tableDestroy()}
           },{
               iconCls:'icon-save',
               text:'保存',
               handler:function(){save_InitialInfo()}
           }],
           onOpen: function () {
               //弹窗后调用方法使用类型1来初始化两个表格
               setEditing_worker_type(1);
               //弹窗后InitialInfo_crii_typed默认类型为1
               $("#InitialInfo_crii_type").combobox("setValue", 1);
           }
        })
    },
    init2:function () {
         $('#InitialInfo_dlg').dialog({
            title: '人工类型工时',
            width: costsystemFblW,
            height: costsystemFblH,
            cache: false,
            modal: true,
            closed: false,
            buttons: '',
            onClose:function(){
                costReportB.edatagrid('saveRow');
                $('#InitialInfo_table').datagrid("loadData", {total: 0, rows: []});             //清空datagrid
                $('#InitialInfo_table2').datagrid("loadData", {total: 0, rows: []});             //清空datagrid
                $("#InitialInfo_crii").textbox("setValue", "");                                  //清空模糊查询
            },
            onOpen: function () {
                //获取cost_report_b表格中的数据，根据id判断是否从数据库获取的
                var crb=costReportB.datagrid("getSelected");
                var  workerType,costId;
                if (crb){
                    workerType=crb.workerType;
                    costId=crb.costId
                }else {
                    workerType=1;
                    costId=-4; //随便取个值
                }

                //弹窗后调用方法使用类型workerType来初始化两个表格
                setEditing_worker_type(workerType);
                //弹窗后InitialInfo_crii_typed默认类型为1
                $("#InitialInfo_crii_type").combobox("setValue", workerType);
                if (crb){
                    var id=crb.id;
                }

                //以下操作开始为表赋值
                if (id){
                    // 根据此行的id从数据库获取cost_report_b_singlehours_item表中的操作数据
                    var data= commonAjax("post","/costReportB/getCostReportBSinglehoursById",{"costReportId":$("#costReportId").val()});
                    if (data.status==200){
                        costReportBSinglehoursItem=data.obj;
                    }
                }
                //在未保存到数据库的时候：从全局变量获取
                if (costReportBSinglehoursItem){
                    costReportBSinglehoursItem.forEach(function (val) {
                        //若相等
                        if (costId==val.costId){
                            $('#InitialInfo_table').edatagrid('addRow', {
                                row: {
                                    num:val.num,                                    //序号
                                    subId: val.subId,                               //隐藏的id
                                    workerType: val.workerType,                    //隐藏的类型id
                                    standard_type: val.standard_type,                    //简称名称
                                    standard_date: val.standard_date,                //标准工时
                                    appendManHour:val.appendManHour,                //附加工时
                                    initialInfo_milliliter: val.initialInfo_milliliter,//灌装总量
                                    singlehours: val.singlehours                        //单支工时
                                }

                            })
                        }
                    })
                }
            }
        });
    }

}


//初始化：b人工-获取工时的的表
var initialInfoDataTable= {
    init:function (newValue,thisNewValue){
        var pkOrg=$("#InitialInfo_crii_pkOrg").combobox("getValue");
        if (pkOrg){
            urlPath='/costReportForm/costReportInitialInfo?type=' + newValue + '&typeName=&pkOrg='+pkOrg;
        }else{
            urlPath='/costReportForm/costReportInitialInfo?type=' + newValue + '&typeName='
        }
        $('#InitialInfo_table2').datagrid({
            nowrap:false,
            toolbar: '#InitialInfo_table2_tb',
            url: urlPath,
            columns: [[
                {field: 'num', title: '序号',align: 'left', width: 15},
                {field: 'text', title: '类型名称',align: 'left', width: 100},
                {field: 'id', title: '工时',align: 'left', width: 15},
                {field: 'remark', title: '备注',align: 'left', width: 100}
            ]],
           onDblClickRow: function (index, row) { //双击事件
               //获取b 人工表格用于判断：配置人工，罐装基础人工，搬运人工都必须只有一行，
               var cbRows= costReportB.edatagrid("getRows")

               if (!(row.id != 0 && Boolean(row.id))) {
                   return;
               }
               $('#InitialInfo_table').edatagrid('saveRow');
               //获取倍数：那么懒的人吗，多双击一次都不愿意
             var multiple=  $("#InitialInfo_crii_multiple").numberbox("getValue");
             if(!multiple){
                 multiple=1;
             }
               if (row.initialType == 1) {
                   //为灌装总量赋值：获取costReportA的罐装重量总和
                   costReportA.edatagrid('saveRow')//防止用户未保存：先cost_report_a为进行保存

                   var  castbool=false;
                   cbRows.forEach(function (val,index) {
                       if (val.workerType==thisNewValue){
                           layer.msg("此人工类型，只能有一行数据",{"icon":5})
                           castbool=true;
                           return;
                       }
                   })
                   if (castbool){
                       return;
                   }
                   var aRows = costReportA.datagrid("getRows");
                   var im = 0;

                   //灌装重量优先先从表的actualValue中查看有没有值:2020年9月28日修改，用户因爆炸盐和肥皂都是取值1的
                   var actualValue = row.actualValue;
                   if (actualValue){
                    im=Number(actualValue);
                   }else {
                       for (var i = 0; i < aRows.length; i++) {
                           im += Number(aRows[i].actualValue);
                       }
                   }

                   //若没有获取实际罐装重量
                   if (!im){
                       layer.msg("配置人工：需配合水料价的【实际罐装重量】来计算！",{"icon":5})
                       return;
                   }

                    for (var i=multiple;i>0;i--){
                        var singlehours;
                        if (row.pkOrg=="0001O110000000001HET"){
                            singlehours=im * row.id / 1000;
                        }else {
                            singlehours=row.id/60*im;
                        }
                        $('#InitialInfo_table').edatagrid('addRow', {
                            index: 0,
                            row: {
                                num:row.num,
                                subId: row.subId,
                                workerType: row.initialType,
                                standard_type: row.logogram,
                                standard_date: row.id,
                                initialInfo_milliliter: im,
                                singlehours:singlehours,
                                pkOrg:row.pkOrg
                            }

                        })
                   }

               } else {
                   // 配置人工，罐装基础人工，搬运人工都必须只有一行，
                   if (thisNewValue !=3){
                       var  castbool=false;
                       cbRows.forEach(function (val,index) {
                           if (val.workerType==thisNewValue){
                               layer.msg("此人工类型，只能有一行数据",{"icon":5})
                               castbool=true;
                               return;
                           }
                       })
                       if (castbool){
                           return;
                       }
                   }
                   for (var i=multiple;i>0;i--) {
                       var singlehours1;
                       if (row.pkOrg=="0001O110000000001HET"){
                           singlehours1=row.id / 10000;
                       }else {
                           singlehours1=row.id/60;
                       }
                       $('#InitialInfo_table').edatagrid('addRow', {
                           row: {
                               num: row.num,
                               subId: row.subId,
                               workerType: row.initialType,
                               standard_type: row.logogram,
                               standard_date: row.id,
                               singlehours:singlehours1,
                               pkOrg:row.pkOrg
                           }

                       })
                   }
               }
               $('#InitialInfo_table').edatagrid("saveRow")
               $('#InitialInfo_crii_type').combobox('disable'); //禁用
           }
        })
    }
}

//B人工-计算单支工时的表：有两种初始化：配置人工类型的一种，还有它3个类型的一种
var initialInfoTable={
    it:function () {
        $('#InitialInfo_table').edatagrid({
            selectOnCheck: false,
            columns: [[
                {field: 'num', title: '序号', align: 'center', width: 20},
                {field: 'subId', title: '产品标准工时id', align: 'center',  editor: 'text', hidden: true},
                {field: 'costId', title: '用户需要计算单支工时详情的关联字段', align: 'center', editor: 'text', hidden: true},
                {field: 'workerType', title: '类型', align: 'center', editor: 'text', hidden: true},
                {field: 'standard_type', title: '类型名称', align: 'center', width: 100, editor: 'text'},
                {field: 'standard_date', title: '标准工时', align: 'center', width: 40, editor: {type: 'numberbox',options: {precision: 3}}},
                {
                    field: 'appendManHour',
                    title: '附加工时',
                    align: 'center',
                    width: 40,
                    editor: {type: 'numberbox', options: {precision: 2,onChange:appendManHourOnChange}}
                },
                {
                    field: 'initialInfo_milliliter',
                    title: '灌装总量',
                    align: 'center',
                    width: 40,
                    editor: {type: 'textbox', options: {required: true,onChange:initialInfoTableImOnChange}}
                },
                {
                    field: 'singlehours',
                    title: '单支工时',
                    align: 'center',
                    width: 40,
                    editor: {type: 'numberbox', options: {precision: 4}}
                },
                {field: 'pkOrg', title: '组织用于判断附加工时的计算', align: 'center',  editor: 'text', hidden: true}

            ]]
        })
    },
    it2:function () {
        $('#InitialInfo_table').edatagrid({ //罐装基础工时、产品工艺标准工时 --初始化表格
            selectOnCheck: false,
            columns: [[
                {field: 'num', title: '序号', align: 'center', width: 20},
                {field: 'subId', title: '产品标准工时id', align: 'center',  editor: 'text', hidden: true},
                {field: 'costId', title: '用户需要计算单支工时详情的关联字段', align: 'center', editor: 'text', hidden: true},
                {field: 'workerType', title: '类型', align: 'center', editor: 'text', hidden: true},
                {field: 'standard_type', title: '类型名称', align: 'center', width: 100, editor: 'text'},
                {field: 'standard_date', title: '标准工时', align: 'center', width: 40, editor: {type: 'numberbox',options: {precision: 3}}},
                {
                    field: 'appendManHour',
                    title: '附加工时',
                    align: 'center',
                    width: 40,
                    editor: {type: 'numberbox',options: {precision: 2,onChange:appendManHourOnChange}}
                },
                {
                    field: 'singlehours',
                    title: '单支工时',
                    align: 'center',
                    width: 40,
                    editor: {type: 'numberbox', options: {precision: 4}}
                },
                {field: 'pkOrg', title: '组织用于判断附加工时的计算', align: 'center',  editor: 'text', hidden: true}
            ]]

        })

    }
}

//初始化销售组织：根据销售组织初始化外销表格
var costReportFormSalesPkOrg= $("#costReport_Form_salesPkOrg").combobox({
    url:'/qc/pkOrg',
    onChange: function (newValue, oldValue) {
        //外销单显示
        //0001O110000000001HC5：澳寶化粧品（香港）有限公司   0001O110000000001HHM澳寶國際貿易有限公司
        if (newValue == "0001O110000000001HC5" || newValue == "0001O110000000001HHM") {

            //动态添加表格
            $("#costExportales_div").append("<span id='costExportales_span'><table id='costExportales'></table></span>")
            //外销单初始化表格
            $('#costExportales').datagrid({
                columns: [[
                    {field: 'exportSales', title: '外销单', width: 206},
                    {field: 'HKD_conversion', title: '港币兑换率', width: 146, editor: {type: 'text'}},
                    {field: 'HKD_conversion_price', title: '兑换金额', width: 146, editor: {type: 'text'}}
                ]]
            });

        } else {
            $("#costExportales_span").remove();

        }
        commonTooltip($("#costReport_Form_pkOrgAccountTooltip"),"公司账套已启用！","left")
        costReportFormPkOrgAccount.combobox("readonly",false)   //账套启用

    }
})

//初始化公司账套：根据组织查询部门
var costReportFormPkOrgAccount= $("#costReport_Form_pkOrgAccount").combobox({
    width:document.getElementById("costReportTdWidth").offsetWidth-5, //获取当前列第一个元素的宽度(这一列是成本单据)
    url:'/qc/pkOrg',
    onChange: function (newValue, oldValue) {
        $("#costReport_Form_department").combotree({
            url: '/costReportForm/getCostPkOrg?pkHrorg=' + newValue
        })
        commonTooltip($("#costReport_Form_departmentTooltip"),"部门已启用！","left")
        $("#costReport_Form_department").combobox("readonly",false) //部门启用
        commonTooltip( $("#finishedProductCodeTooltip"),"成品编码已启用","left")
        $('#finishedProductCode').textbox('readonly', false)
        $('#finishedProductCodeZt').textbox('readonly', false)
    }
})
//以下是初始化表单宽度操作：为了实现百分比的宽度，使用内联元素包裹着块级元素，直接在元素中style="15%"没有效果
$("#costReport_Form_department").combotree({width:document.getElementById("costReportTdWidth").offsetWidth-5})     //部门定义宽度
$("#finishedProductCode").textbox({width:finishedProductCodeInitWidth(1)})     //成本编码定义宽度
$("#finishedProductCode2").textbox({width:finishedProductCodeInitWidth(2)})     //成本编码2定义宽度
function finishedProductCodeInitWidth(val) {
    //获取td表格的总宽度总宽度    5px 是留个 "-"
    var totalWidth = Number(document.getElementById("finishedProductCode2").parentElement.clientWidth)-20;
    var result;
    switch (val) {

        case 1:
            result=totalWidth*0.35;
            break;
        case 2:
            result=totalWidth*0.65;
            break;

    }
    return result;
}
